/* 
 * File:   Ray.h
 * Author: brady
 *
 * Created on February 1, 2011, 3:01 PM
 */


#include <Vector3D.h>
#include <vector>
using namespace cs5721;
using namespace std;

#ifndef RAY_H
#define	RAY_H


class Ray {
public:
    Ray();
    virtual ~Ray();
    Ray(Vector3D origin, Vector3D direction);
    const Vector3D& GetOrigin(){return Origin;}
    void SetOrigin(Vector3D origin);
    const Vector3D& GetDirection(){return Direction;}
    void SetDirection(Vector3D direction);
    Vector3D Follow(double tval); //found by adding tval*direction to origin
    void Normalize(){Direction.normalize();}
    int GetRecursionDepth(){return RecursionDepth;}
    void SetRecursionDepth(int rd){RecursionDepth = rd;}
    vector<double> RefractiveIndex;
    int sNum;
    
private:
    int RecursionDepth;
    Vector3D Origin;
    Vector3D Direction;//RELATIVE TO THE ORIGIN
    
};

#endif	/* RAY_H */

